﻿using SD.Infrastructure.DTOBase;
using SlamDunk.MES.IAppService.DTOs.Outputs.FoundationContext;
using SlamDunk.MES.IAppService.DTOs.Outputs.ResourceContext;
using SlamDunk.ValueObjects.Enums;
using System;
using System.Runtime.Serialization;

namespace SlamDunk.MES.IAppService.DTOs.Outputs.DefinitionContext
{
    /// <summary>
    /// 物料清单数据传输对象
    /// </summary>
    [DataContract]
    public class BomInfo : BaseDTO
    {
        #region 版本号 —— string VersionNo
        /// <summary>
        /// 版本号
        /// </summary>
        [DataMember]
        public string VersionNo { get; set; }
        #endregion

        #region 产品Id —— Guid ProductId
        /// <summary>
        /// 产品Id
        /// </summary>
        [DataMember]
        public Guid ProductId { get; set; }
        #endregion

        #region 运行规模 —— decimal RunSize
        /// <summary>
        /// 运行规模
        /// </summary>
        [DataMember]
        public decimal RunSize { get; set; }
        #endregion

        #region 生效日期 —— DateTime? EffectedDate
        /// <summary>
        /// 生效日期
        /// </summary>
        [DataMember]
        public DateTime? EffectedDate { get; set; }
        #endregion

        #region 失效日期 —— DateTime? ExpiredDate
        /// <summary>
        /// 失效日期
        /// </summary>
        [DataMember]
        public DateTime? ExpiredDate { get; set; }
        #endregion

        #region 工厂模型Id —— Guid? FacilityId
        /// <summary>
        /// 工厂模型Id
        /// </summary>
        [DataMember]
        public Guid? FacilityId { get; set; }
        #endregion

        #region 是否启用 —— bool Enabled
        /// <summary>
        /// 是否启用
        /// </summary>
        [DataMember]
        public bool Enabled { get; set; }
        #endregion

        #region 启用人账号 —— string EnablerAccount
        /// <summary>
        /// 启用人账号
        /// </summary>
        [DataMember]
        public string EnablerAccount { get; set; }
        #endregion

        #region 启用人姓名 —— string EnablerName
        /// <summary>
        /// 启用人姓名
        /// </summary>
        [DataMember]
        public string EnablerName { get; set; }
        #endregion

        #region 停用人账号 —— string DisablerAccount
        /// <summary>
        /// 停用人账号
        /// </summary>
        [DataMember]
        public string DisablerAccount { get; set; }
        #endregion

        #region 停用人姓名 —— string DisablerName
        /// <summary>
        /// 停用人姓名
        /// </summary>
        [DataMember]
        public string DisablerName { get; set; }
        #endregion

        #region 停用原因 —— string DisabledReason
        /// <summary>
        /// 停用原因
        /// </summary>
        [DataMember]
        public string DisabledReason { get; set; }
        #endregion

        #region 提审人账号 —— string SubmitterAccount
        /// <summary>
        /// 提审人账号
        /// </summary>
        [DataMember]
        public string SubmitterAccount { get; set; }
        #endregion

        #region 提审人姓名 —— string SubmitterName
        /// <summary>
        /// 提审人姓名
        /// </summary>
        [DataMember]
        public string SubmitterName { get; set; }
        #endregion

        #region 审核状态 —— CheckStatus CheckStatus
        /// <summary>
        /// 审核状态
        /// </summary>
        [DataMember]
        public CheckStatus CheckStatus { get; set; }
        #endregion

        #region 审核意见 —— string CheckedRemark
        /// <summary>
        /// 审核意见
        /// </summary>
        [DataMember]
        public string CheckedRemark { get; set; }
        #endregion

        #region 审核人账号 —— string CheckerAccount
        /// <summary>
        /// 审核人账号
        /// </summary>
        [DataMember]
        public string CheckerAccount { get; set; }
        #endregion

        #region 审核人姓名 —— string CheckerName
        /// <summary>
        /// 审核人姓名
        /// </summary>
        [DataMember]
        public string CheckerName { get; set; }
        #endregion

        #region 审核时间 —— DateTime? CheckedTime
        /// <summary>
        /// 审核时间
        /// </summary>
        [DataMember]
        public DateTime? CheckedTime { get; set; }
        #endregion

        #region 创建人账号 —— string CreatorAccount
        /// <summary>
        /// 创建人账号
        /// </summary>
        [DataMember]
        public string CreatorAccount { get; set; }
        #endregion

        #region 创建人姓名 —— string CreatorName
        /// <summary>
        /// 创建人姓名
        /// </summary>
        [DataMember]
        public string CreatorName { get; set; }
        #endregion

        #region 描述 —— string Description
        /// <summary>
        /// 描述
        /// </summary>
        [DataMember]
        public string Description { get; set; }
        #endregion


        //导航属性

        #region 导航属性 - 产品 —— MaterialInfo ProductInfo
        /// <summary>
        /// 导航属性 - 产品
        /// </summary>
        [DataMember]
        public MaterialInfo ProductInfo { get; set; }
        #endregion

        #region 导航属性 - 工厂模型 —— FacilityInfo FacilityInfo
        /// <summary>
        /// 导航属性 - 工厂模型
        /// </summary>
        [DataMember]
        public FacilityInfo FacilityInfo { get; set; }
        #endregion
    }
}
